[アップデート] AMI が Organizations単位、OU単位で共有可能になりました!
ちゃだいん(@chazuke4649)です。
AMI が Organizations単位、OU単位で共有可能になりました!
どういうこと?
いままでは、AMIを特定のAWSアカウントIDとのみ、共有することができました。その場合、AMIをOrganizations/OUと共有するにはそれぞれ各AWSアカウントIDとAMIの共有を明示的に登録する必要がありました。例えば、Organizations配下の20AWSアカウントとAMIを共有したい場合は、20個のIDをAMIに対し登録しなければなりませんでした。
今回のアップデートにより、Organizations単位や、OU単位でAMIの共有が可能となりました。Organizationsや対象のOUに変更(AWSアカウントの追加や削除)があると、AMIの共有は自動的に変更されます。AMIのOrganizations/OUとの共有が一元的・自動的に管理でき、とても楽になりました。
上図は公式ドキュメントより引用: Share an AMI with specific organizations or organizational units - Amazon Elastic Compute Cloud
注意点
詳細はドキュメントをご確認いただく必要がありますが、以下に一部抜粋します。
- カスタマー定義タグは共有されません
- CLI と SDK からのみ対応可能。本記事執筆時点ではマネジメントコンソールではサポートされていません
- 現時点では AWS CLI v1 のみ(1.21.7)
api-change:ec2: Support added for AMI sharing with organizations and organizational units in ModifyImageAttribute API
- ただし、v2も速やかにアップデートされるかと思われるので、以降最新情報は CHANGELOGをご確認ください
2022/04/04追記)マネジメントコンソールとAWS CLI v2もサポートされているとのことです。
やってみた
今回検証する内容です。先程の図に要素を追加しました。
- AWSアカウント
111111111111
にてAMIを作成し共有を実行 - 共有先はOU
WorkloadsOU
とする WorkloadsOU
配下のAWSアカウント222222222222
にて共有されたかどうか、確認するWorkloadsOU
配下ではないAWSアカウント333333333333
にて共有されていないかどうか、確認する
では実際にやっていきます。
1. AMIを作成し、共有する
すでに起動しているEC2からAMIを作成します。その時についでにカスタマー定義タグもつけておきます。
AMIの作成を実行しました。
すると、Owned by me の中に作成されたAMI ami-....6694
が確認できます。
次に、ドキュメントに記載のコマンドを実行します。
$ aws ec2 modify-image-attribute \ --image-id ami-065839f8ed1b26694 \ --launch-permission "Add=[{OrganizationalUnitArn=arn:aws:organizations::999999999999:ou/o-example/ou-example}]" \
※ OUのARNはダミーです
2. 共有先OU配下のAWSアカウントにて共有されているかどうか確認する
対象のAWSアカウント22222222222
にログインし、AMIコンソールを開きます。Private Imageを選択すると、以下の通りAMI-....6694
が共有されてることが確認できました。
ちなみに、タグはやはり共有されていません。
3. 共有先OU配下"ではない"AWSアカウントにて共有されて"いないかどうか"確認する
対象外のAWSアカウント333333333333
にログインして先程の同様の画面を開きます。すると、こちらには共有されていないことが確認できました。
終わりに
Organizations環境におけるAMIの共有がとても楽チンになりました。特に問題なければOrganizations単位/OU単位で共有すれば以後AWSアカウントが追加された場合に、追加対応が不要となります。各ワークロードで使用するAMIを一元的に作成・管理・配布している方はとても嬉しいアップデートですね。使っていきましょう!
それではこの辺で。ちゃだいん(@chazuke4649)でした。